const Koa = require('koa'); // 1. 引入koa
const Router = require('koa-router');
const json = require('koa-json');
const logger = require('koa-logger')
const bodyparse = require('koa-bodyparser');
var jwt = require('jsonwebtoken');

// 引入控制器
const user = require('./server/controllers/user');
const ask = require('./server/controllers/question');

const app = new Koa(); // 2. new一个koa对象
var cors = require('koa2-cors'); // 解决跨域问题

const router = new Router();

// allowedMethods 可有可无。
// 作用是当请求api的方法匹配的时候，会调用该方法。
// 比如应该是GET请求，而前端发起的是POST请求，此时就会调用该中间件方法
app.use(json());
app.use(bodyparse());
app.use(cors());
app.use(router.routes()).use(router.allowedMethods()); 
app.use(logger());

/* 登录 */
router.post('/api/login', async (ctx, next) => {
  await user.userlogin(ctx);
});

/* 注销 */
router.post('/api/logout', async (ctx, next) => {
  await user.userlogout(ctx);
});

// 个人信息
router.post('/api/info', async (ctx, next) => {
  await user.getUser(ctx);
});

// 获取所有问答
router.post('/api/asklist', async(ctx, next) => {
  await ask.getList(ctx);
})

// 获取所有用户问答
router.post('/api/userlist', async(ctx, next) => {
  await ask.getUserList(ctx);
})

// 添加问答

router.post('/api/addAsk', async(ctx, next) => {
  await ask.addQuestion(ctx);
})


app.listen(8080, () => {
    console.log('start success. http://localhost:8080');
}); // 3.监听端口并启动